
class textIndex{
    map<string,pair<int,int> > index;
    int cnt;
    string textFile;
    string queryFile;
public:
    textIndex(string textfile,string queryfile){
        cnt = 0;
        textFile = textfile;
        queryFile = queryfile;

    }
    void work(){
        _msg("index buiding...");

        if(!buid()){
            error();
            return;
        }else msg("ok");
        msg("index query...");
        if(!query()){
            error();
            return;
        }
    }
    bool buid(){
        string temp;
        ifstream in;
        try{
            in.open(textFile);
            while(cin>>temp){
                if(index.count(temp)){
                    index[temp].second++;
                }else{
                    index.insert(make_pair(temp,make_pair(cnt,1)));
                }
            }
        }catch(exception e){
            error();
        }


    }
    bool query(){
        string temp;
        ifstream in;
        try{
            in.open(textFile);
            while(cin>>temp){
                if(index.count(temp)){
                    _msg(temp+": \t");
                    pair<int,int> & ii= index[temp] ;
                    _msg("first-");
                    _msg(ii.first);
                    _msg("#all ");
                    msg(ii.second);
                }else{
                    index.insert(make_pair(temp,make_pair(cnt,1)));
                }
            }
        }catch(exception e){
            error();
        }
    }
    void error(){
        msg("###ERROR###");
    }
    template<typename T>
    void msg(T c){
        cout<<c<<endl;
    }
    template<typename T>
    void _msg(T c){
        cout<<c;
    }
};


int main(int argc,char *argv[]){
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    if(argc==3){
        textIndex tI(argv[1],argv[2]);
        tI.work();
    }else{
        throw exception();
    }
    return 0;
}
